home *** CD-ROM | disk | FTP | other *** search
/ The Atari Compendium / The Atari Compendium (Toad Computers) (1994).iso / files / umich / network / ka9q / ka9q_src.arc / SMTP.H < prev    next >
C/C++ Source or Header  |  1988-07-28  |  2KB  |  73 lines

  1. #define SMTPTRACE            /* enable tracing for smtp */
  2. #define SMTP_PORT    25        /* well-known port for smtp */
  3. #define SMTPCLITIME    900        /* 15 minutes between client starts */
  4. #define MAXSESSIONS    10        /* most connections allowed */
  5. #define JOBNAME        13        /* max size of a job name with null */
  6. #define    LINELEN        128
  7. #define SLINELEN    32
  8.  
  9. extern char mailspool[];
  10. extern char mailqdir[];        /* Outgoing spool directory */
  11. extern char mailqueue[];    /* Prototype of work file */
  12. extern char maillock[];        /* Mail system lock */
  13. extern char baddir[];        /* Undeliverable jobs */
  14. extern char hostname[];
  15. extern int32 mailroute();
  16. extern int mlock(),rmlock();
  17.  
  18. /* Recipient address entry */
  19. struct addr {
  20.     struct addr *next;
  21.     char *val;
  22. };
  23.  
  24. /* Per-session control block  used by smtp server */
  25. struct mail {
  26.     struct tcb *tcb;    /* TCP control block pointer */
  27.     char state;
  28. #define    COMMAND_STATE    0
  29. #define    DATA_STATE    1
  30.     char *system;        /* Name of remote system */
  31.     char *from;        /* sender address */
  32.     struct addr *to;    /* Linked list of recipients */
  33.     char buf[LINELEN];    /* Input buffer */
  34.     char cnt;        /* Length of input buffer */
  35.     FILE *data;        /* Temporary input file pointer */
  36.     int32 seqn;        /* message id */
  37. };
  38.  
  39. /* used by smtpcli as a queue entry for a single message */
  40. struct smtp_job {
  41.     struct     smtp_job *next;    /* pointer to next mail job for this system */
  42.     char    jobname[9];    /* the prefix of the job file name */
  43.     char    *from;        /* address of sender */
  44.     char    *to;        /* address recipient  */
  45. };
  46.  
  47. /* control structure used by an smtp client session */
  48. struct smtp_cb {
  49.     struct tcb *tcb;    /* tcp task control buffer */
  50.     int32    ipaddr;        /* address of forwarding system */
  51.     char     state;        /* state machine placeholder */
  52. #define CLI_OPEN_STATE    0
  53. #define    CLI_HELO_STATE    1
  54. #define CLI_MAIL_STATE    2
  55. #define CLI_RCPT_STATE    3
  56. #define CLI_DATA_STATE    4
  57. #define    CLI_SEND_STATE    5
  58. #define    CLI_UNLK_STATE    6
  59. #define CLI_QUIT_STATE    7
  60. #define CLI_IDLE    8
  61.     char    *wname;        /* name of workfile */
  62.     char    *tname;        /* name of data file */
  63.     char    buf[LINELEN];    /* Input buffer */
  64.     char    cnt;        /* Length of input buffer */
  65.     FILE    *tfile;
  66.     struct    smtp_job *jobq;
  67. };
  68.  
  69. #define    NULLADDR    (struct addr *)0
  70. #define    NULLMAIL    (struct mail *)0
  71. #define    NULLCB        (struct smtp_cb *)0
  72. #define NULLJOB        (struct smtp_job *)0
  73.